package com.gengzp.mq.server.facade;

import com.gengzp.mq.server.model.message.entity.MqMessage;

import java.util.List;

/**
 * @ClassName MqMessageFacadeService
 * @Description 消息管理门面层接口
 * @Author gengzp
 * @Date 2025/9/3 17:29
 */
public interface MqMessageFacadeService {

    /**
     * 根据消息id集合批量查询消息
     *
     * @param messageIds 消息id集合
     * @return 消息集合
     */
    List<MqMessage> searchMqMessagesByIds(List<String> messageIds);

    /**
     * 根据消息id集合批量查询已经消费成功的消息
     *
     * @param messageIds 消息id集合
     * @return 消息集合
     */
    List<MqMessage> searchConsumedSuccessMqMessagesByIds(List<String> messageIds);

    /**
     * 查询所有过时消息id
     * <p> 非死信的, 且发送时间距离当前系统时间超过 14 天的消息 </p>
     *
     * @return 过时消息id集合
     */
    List<String> searchAllObsoleteMessageIds();

    /**
     * 根据状态查询消息
     *
     * @param status 状态
     * @return 指定状态的消息集合
     */
    List<MqMessage> searchMqMessagesByStatus(Integer status);

    /**
     * 批量更改消息为死信消息
     *
     * @param messageIds 消息id集合
     */
    void batchEditMessageToDeath(List<String> messageIds);

    /**
     * 根据id修改消息
     *
     * @param mqMessage 消息
     */
    void editMessageById(MqMessage mqMessage);

    /**
     * 根据id批量删除消息
     *
     * @param messageIds 消息id集合
     */
    void removeMessagesByIds(List<String> messageIds);

}
